package com.xiaoxi.exam.mybatis.typehandlers;

/**
 * Created by ywb on 19/9/2017.
 *
 * 数据类型转换 数据库JSON类型 <==> Java class
 */
public class JsonNewTypeHandler {

//  public JsonNewTypeHandler() {
//  }
//
//  public JsonNewTypeHandler(Class<T> clazz) {
//    this.clazz = Objects.requireNonNull(clazz, "Type argument cannot be null");
//  }
//
//  private static final ObjectMapper mapper = new ObjectMapper();
//  Class<T> clazz;
//
//  @Override
//  public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType)
//      throws SQLException {
//    PGobject jsonObject = new PGobject();
//    jsonObject.setType("json");
//    jsonObject.setValue(toJson(parameter));
//    ps.setObject(i, jsonObject);
//
//
//  }
//
//  @Override
//  public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
//    return toObject(Objects.toString(rs.getObject(columnName)), clazz);
//  }
//
//  @Override
//  public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
//    return toObject(Objects.toString(rs.getObject(columnIndex)), clazz);
//
//  }
//
//  @Override
//  public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
//    return toObject(Objects.toString(cs.getObject(columnIndex)), clazz);
//  }
//
//  String toJson(T object) {
//    try {
//      return mapper.writeValueAsString(object);
//    } catch (Exception e) {
//      throw new RuntimeException(e);
//    }
//  }
//
//  private T toObject(String content, Class<T> clazz) {
//    if (!StringUtils.isBlank(content)) {
//      try {
//        return mapper.readValue(content, clazz);
//      } catch (Exception e) {
//        throw new RuntimeException(e);
//      }
//    } else {
//      return null;
//    }
//  }
//

}
